/* Diese Klasse ergibt die Mittelwert von allen vorgemerkten 
 * Buechern je nach Sachgebiet. Es benoetigt eine Liste von
 * vorhandenen und vorgemerkten Buecher der Bibliothek.
 * 
 * Datei : VormerkungMittelwert.java   Autor : Kouende Steeve
 * Datum : 30.11.2011 
 */

package statistik;                     /* diese package beinhaltet
                                        * alle notwendige klasse,
                                        * die zur Ausfuehrung diese 
                                        * Klasse benoetigt werden 
                                        */

import java.util.ArrayList;
import java.util.List;

/* die oeffentlichen Daten von der Klasse VormerkungMittelwert sind :
 * 
 * public List <Integer> b_bestand (Wie viele mal ein Buch 
 *                                  vorgemerkt ist)
 * public List <Float> b_frequenz (Wie viel mal ein Buch im Vergleich
 *                                 zu den anderen Buechern 
 *                                 vorgemerkt ist)
 * public List <Float> mittelwertVor (Wie ein Buch im Mittelwert 
 *                                    vorgemerkt ist)
 * mediumSG mediumVorMittelwertSG;
 * vorMediumSG vorgemerkteMittelwertSG;
 * int count,i,j;
 * float buchbestand, frequenz;
 * 
 * Privaten Daten
 * 
 * String s; 
 * int m, count; 
 * float result (Die Haeufigkeit pro Buch von ausgeliehen Buecher);
 * float h ( wie oft ein Buch vorgemerkt ist);
 * float a (die Zahl von gesamte ausgeliehenen Buecher);
 * 
 * Methoden
 * 
 * public void ausgelieheneBuch ()
 * public void hauefigkeitBuch ()
 * public void Mittelwert ()
 * public void Anzeige ()
 */

public class VormerkungMittelwert
{

  public static void main (String[] args)
  {

    VormerkungMittelwert vorMittelwert = new VormerkungMittelwert (1);

    vorMittelwert.ausgelieheneBuch ();
    vorMittelwert.hauefigkeitBuch ();
    vorMittelwert.mittelwert ();
    vorMittelwert.Anzeige ();
  }
  
  float buchbestand, frequenz;
  int count, i, j, sachgebiet = 2;
  
  mediumSG mediumVorMittelwertSG ;
  vorMediumSG vorgemerkteMittelwertSG; 
  public List<Integer> b_bestand = new ArrayList ();
  public List<Float> b_frequenz = new ArrayList ();

  public ArrayList<Float> mittelwertVor = new ArrayList<Float> ();


  public VormerkungMittelwert (int sachgebiet)
  {
    mediumVorMittelwertSG = new mediumSG (sachgebiet);
    vorgemerkteMittelwertSG = 
        new vorMediumSG (sachgebiet);
  }

  public void ausgelieheneBuch ()
  {

    for (i = 0; i < 
        mediumVorMittelwertSG.gibMedium ().size (); i++)
    {
      String s = (String) 
          mediumVorMittelwertSG.gibMedium ().get (i);
      int m = 0;

      for (j = 0; j < 
          vorgemerkteMittelwertSG.gibVorgemerkteMedium ().size (); j++)
      {
        /* prueft ob ein medium ist in der
         *  vorgemerkten List  oder nicht           
         */
        if (s.equals 
            (vorgemerkteMittelwertSG.gibVorgemerkteMedium ().get (j))) 
                                                
        {
          /* Wenn Ja zaehlt es wie viele mal das Medium 
           * vorgemerkt ist 
           */
          m++;                 
        }
      }
      b_bestand.add (m);
    }

  }

  /* Die funktion liefert, wie oft ein Buch im Vergleich zu andere
   * vorgemerkt ist 
   */
  public void hauefigkeitBuch ()
  {
    float result, h, a;
    int count;

    for (count = 0; count < 
        mediumVorMittelwertSG.gibMedium ().size (); count++)
    {
   
      h = (float) b_bestand.get (count);                                         
      a = (float) 
          vorgemerkteMittelwertSG.gibVorgemerkteMedium ().size (); 
      result = (float) ( (h / a) * 100); 
        
   // List von Haeufigkeit der vorgemerkten Buecher
      b_frequenz.add (result);                               
     }
  }

  public void mittelwert ()
  {
    float result;
   
    for (count = 0; count < 
        mediumVorMittelwertSG.gibMedium ().size (); count++)
    {
      buchbestand = (float) b_bestand.get (count);
      frequenz = (float) b_frequenz.get (count);
      result = (float) ( (frequenz /
          vorgemerkteMittelwertSG.gibVorgemerkteMedium ().size ()) * 100);
      mittelwertVor.add (result);
      
    }
  }

  public void Anzeige ()
  {
    int count;

    for (count = 0; count < mediumVorMittelwertSG.gibMedium ().
        size (); count++)
    {
      System.out.
      printf ("Buch %s hat %.2f prozent \n",
          mediumVorMittelwertSG.gibMedium ().get (count),
          mittelwertVor.get (count));
    }
  }

}
